함수형 프로그래밍과 JavaScript ES6+ 강의를 듣고 ..

유인동님의 함수형 프로그래밍과 JavaScript ES6+ 를 완강했다.

강의 초기 부분은 함수가 파라미터로 들어가고 또 함수가 함수를 리턴하는 등 일급함수에 대해 배웠고, iterable 에는 [Symbol.iterable]() 메서드가 있고 이를 이용해 iterable을 사용할 수 있다는 것을 알게 됐다.

다음 단계에선 reduce, map, filter 등과 기능은 같지만 모든 iterator를 처리할 수 있게끔 확장해서 구현하고, go 와 pipe 함수를 통해 순차적으로 처리하는 법을 배웠다. 또 이 부분에서 커링함수을 사용해 코드의 여분을 줄였다.

그 다음엔 위에서 만든 reduce, map, filter 등의 함수에서 프로미스를 받아서 처리하는 로직을 추가했다. 이렇게 프로미스가 들어와도 에러가 나지 않기 위해 처리하는 부분을 클레이슬리 컴포지션을 통해 구현했다.

go 와 pipe 는 유용해보였고 우리 회사 코드에서도 마침 적용할 수 있는 부분이 보여서 팀원분들과 얘기한 후 pr을 올렸다. 그런데 go 함수와 명령형 프로그래밍의 차이점을 모르겠다고 하셔서 생각해보니

  1. 가독성이 좋아졌고
  2. 반복되는 부분을 pipe로 묶어서 재활용할 수 있고
  3. iterator 를 활용할 수 있고
  4. promise 를 잘 처리할 수 있는 장점이 있긴 했지만 …

사실상 3, 4번은 현재 코드에서 활용을 안 하고 있어서 위 코드 활용이 큰 장점으로 와닿지 않았다.

3 - iterator 는 거의 배열만 사용하고 있고, 4 - back 에서 data fetch 해서 받아오는 부분을 promise에서 다시 일반 변수에 넣었다가 다시 promise로 사용했다가 하는 강의에서 보여준 그런 복잡한 경우는 없었기 때문에 효용성이 크게 와닿지 않았다.

강의를 완강한 후, 이 강의의 2탄 격인 응용편이 있는데 이걸 듣는게 좋을지 아니면 테오님이 보고 내용이 괜찮아보인다고 하신 쏙쏙 들어오는 함수형 코딩 책을 시작하는게 좋을지 고민을 했다. 팀원분들도 적극 추천해주셨고.. 그치만 응용편 수강평을 보면 너무나 좋은 강의라고 극찬일색이고 또 어떤 분이 위와 같은 고민이 (go, pipe 사용, 함수합성의 효용성) 응용편을 듣고 해결되었다는 얘기를 들으니 역시 응용편도 들어야 겠다는 생각이 든다.

실무에서 함수형 프로그래밍을 적용한 코드(with react)를 보고싶은데 아직까지 찾을 수가 없었다. 우선 학습을 좀 더 하고 학습내용을 적용한 프로젝트를 만들어봐야겠다.


Written by@Jiyon Lee
뜨거운 코드를 가르며

GitHub